package com.justnow;

import java.util.Collections;

/**
 * int型数据的取值范围为(-2147483648, 2147483647)即(-2^31, 2^31 - 1)，当超出这个范围时，就表示数据溢出了
 */
public class Solution7 {
    public int reverse(int x) {
        int rev = 0;
        //当x==0时，说明整数的后面几位为0，此时就不用再反转了
        while(x != 0) {
            int pop = x % 10;
            x /= 10;
            //分两种情况为0，第一种是大于最大值，第二种是小于最小值
            if (rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && pop > 7))
                //这里面的7是因为整型最大值一次对10取模，最后一位是7
                //当rev>214748364时，此时说明溢出了；
                //当rev==214748364时，那么当pop大于7时，说明溢出了
                return 0;
            if (rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && pop < -8))
                return 0;

            rev = rev * 10 + pop;
        }
        return rev;
    }
    public static void main(String[] args) {
        int pow = (int) Math.pow(2, 31);

        int maxValue = Integer.MAX_VALUE;
        int minValue = Integer.MIN_VALUE;
        System.out.println(maxValue);
        System.out.println(minValue);
    }
}
